Flow-sensitive Typing

{,}
TypeScript, Typed Racket(c.f. occurrence typing)
supercompilation

function f(v : number | null) {
if (v !== null) {
// vnumber
......
} else {
// vnull
}
}